<?php
require_once ("model/data.php");
require_once ("model/album.php");
require_once ("model/albumDAO.php");
require_once ("model/imageDAO.php");
class gestionAlbums {
	private $albumDAO;
	private $imageDAO;
	private $albumList;
	function __construct() {
		global $data;
		
		$this->albumDAO = new AlbumDAO ();
		$this->imageDAO = new ImageDAO ();
		$this->albumList = array ();
		
		$data = new Data ();
		$data->creation_msg = "";
		$data->action_msg = "";
		$data->ajout_msg = "";
		
		// Recupération des albums existants
		$this->albumList = $this->albumDAO->getAlbums ();
		$data->albumList = $this->albumList;
	}
	function index($albumId=null) {
		global $data;
		
		// Si un album a été selectionné, on affiche son contenu
		if (isset ( $_GET ["albumId"] )) {
			$albumId = $_GET ["albumId"];
		}
		
		$this->albumList = $this->albumDAO->getAlbums ();
		$data->albumList = $this->albumList;
		
		if (isset ($albumId)) {
			
			
			// Lors de l'édition, nous devons recuperer toutes les images disponibles à l'ajout
			$data->imagesDisponibles = $this->imageDAO->getImages ();
			// Ainsi que celles par album
			$data->imagesAffectees = $this->imageDAO->getImagesParAlbums ($albumId);
			
			$data->albumCourant = $this->albumList [$albumId];
			$data->showEditionAlbum = true;
		}
		// Charge le menu
		$this->menu ();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "albumsView.php";
		require_once ("view/mainView.php");
	}
	function creer() {
		global $data;
		// Creation de l'album
		if (isset ( $_POST ["name"] ) && $_POST ["name"] != "") {
			$nouvelAlbum = $this->albumDAO->creerAlbum ( $_POST ["name"] );
			$this->albumList [$nouvelAlbum->getId ()] = $nouvelAlbum;
			$data->creation_msg = "Création réussie<br/>";
		} else {
			$data->creation_msg = "Un nom d'album ne peut être vide<br/>";
		}
		
		// Charge le menu
		$this->menu ();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "albumsView.php";
		$data->albumList = $this->albumList;
		require_once ("view/mainView.php");
	}
	function vider() {
		global $data;
		$idAlbum = null;
		if (isset ( $_GET ["albumId"] )) {
			$idAlbum = $_GET ["albumId"];
			
			if (array_key_exists ( $idAlbum, $this->albumList )) {
				// Vidage de l'album
				$this->albumDAO->viderAlbum ( $idAlbum );
				$data->action_msg = "Vidage réussie<br/>";
			} else {
				$data->action_msg = "Album inexistant<br/>";
			}
		} else {
			$data->action_msg = "Aucun album à vider selectionné<br/>";
		}
		// Charge le menu
		/*$this->menu ();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "albumsView.php";
		$data->albumList = $this->albumList;
		require_once ("view/mainView.php");*/
		$this->index($idAlbum);
		
	}
	function supprimer() {
		global $data;
		// Pour la suppression, il est necessaire de vider la table des associations auparavant
		if (isset ( $_GET ["albumId"] )) {
			$this->albumDAO->viderAlbum ( $_GET ["albumId"] );
			$this->albumDAO->supprimerAlbum ( $_GET ["albumId"] );
			unset ( $this->albumList [$_GET ["albumId"]] );
			$data->action_msg = "Album supprimé<br/>";
		} else {
			$data->action_msg = "Aucun album à vider selectionné<br/>";
		}
		// Charge le menu
		$this->menu ();
		
		// Indique la vue à afficher et charge le contenu
		$data->content = "albumsView.php";
		$data->albumList = $this->albumList;
		require_once ("view/mainView.php");
	}
	function ajouterImage() {
		global $data;
		// POST AlbumCurant provient du champs caché forcément défini
		$idAlbum=$_POST ["albumCourant"];
		
		if (isset ( $_POST ["idImage"] )) {
			$idImage = $_POST ["idImage"] ;
			if ($this->albumDAO->verifierAffectionImageAlbum($idAlbum, $idImage) == 0) {
				// Ajout de l'image
				$this->albumDAO->ajouterImageAlbum ($idAlbum, $idImage );
				
			} else {
				$data->ajout_msg = "L'image est déjà affectée à cet album !";
			}
		}
		
		$this->index($idAlbum);
	}
	
	function changerOrdre() {
		global $data;
		if (isset($_GET["albumId"]) && isset($_GET["imageId"]) && isset($_GET["position"]) && isset($_GET["sens"])) {
			$idAlbum=$_GET["albumId"];
			$position=$_GET["position"];
			$sens=$_GET["sens"];
			$idImage=$_GET["imageId"];
			$this->albumDAO->permuterImageAlbumSequence($idAlbum,$idImage, $position, $sens);
		
		} else {
			$idAlbum=null;
		}


		$this->index($idAlbum);
	}
	
	function desaffecterImageAlbum() {
		global $data;
		if (isset($_GET["albumId"]) && isset($_GET["imageId"]) && isset($_GET["position"])) {
			$idAlbum=$_GET["albumId"];
			$idImage=$_GET["imageId"];
			$position=$_GET["position"];

			$this->albumDAO->supprimerImageAlbum($idAlbum, $idImage, $position);
				
		} else {
			$idAlbum=null;
		}

		$this->index($idAlbum);
	}
	
	/**
	 * **********************************************************************************************
	 * UTILITAIRES *
	 * **********************************************************************************************
	 */
	private function menu() {
		global $data;
		
		// Mise en place du menu
		$data->menu ['Home'] = "index.php?controller=home&action=index";
		$data->menu ['A propos'] = "index.php?controller=home&action=aPropos";
		$data->menu ['Voir photos'] = "index.php?controller=viewPhoto&action=index";
		$data->menu ['Upload de photos'] = "index.php?controller=uploadPhoto&action=index";
		$data->menu ['Gestion des albums'] = "index.php?controller=gestionAlbums&action=index";
	}
}
?>